﻿// ***********************************************************************
// Assembly         : Delta_webControl
// Author           : Juan Alberto Cerino Gomez
// Created          : 03-02-2013
//
// Last Modified By : Juan Alberto Cerino Gomez
// Last Modified On : 05-28-2013
// ***********************************************************************
// <copyright file="BaseUserControl.cs" company="Delta Bussines">
//     Copyright (c) 2013  Delta Bussines. All rights reserved.
// </copyright>
// <summary></summary>
// ***********************************************************************
using System;
using System.Collections.Generic;
using System.Linq;
using System.Text;
using System.IO;
using System.Reflection;
using System.Web.UI;

namespace Delta_webControl
{
	/// <summary>
	/// Clase que se encarga de cargar un web user control que se encuentra en una DLL como recurso incrustado.
	/// </summary>
	public class BaseUserControl :System.Web.UI.UserControl
	{
		/// <summary>
		/// Pagina que contiene el control.
		/// </summary>
		protected internal Page paginahost = null;
		/// <summary>
		/// Ejecuta la lógica en tiempo de diseño.
		/// </summary>
		protected override void Construct()
		{
			base.Construct();
			
		}
		/// <summary>
		/// Inicializa el control derivado de la clase <see cref="T:System.Web.UI.TemplateControl" />.
		/// </summary>
		protected override void FrameworkInitialize()
		{
			base.FrameworkInitialize();

			string content = String.Empty;
			Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetType(), GetType().Name + ".ascx");
			using (StreamReader reader = new StreamReader(stream))
			{
				content = reader.ReadToEnd();
			}

			if (paginahost == null)
				paginahost = Page;
			Control userControl = paginahost.ParseControl(content);
			this.Controls.Add(userControl);
		}
	
	}

	/// <summary>
	/// Clase que se encarga de cargar una pagina desde una DLL
	/// </summary>
	public class BasePage : System.Web.UI.Page
	{
		/// <summary>
		/// Ejecuta la lógica en tiempo de diseño.
		/// </summary>
		protected override void Construct()
		{
			base.Construct();
			// page == null here
		}
		/// <summary>
		/// Inicializa el árbol de control durante la generación de la página sobre la base de la naturaleza declarativa de la página.
		/// </summary>
		protected override void FrameworkInitialize()
		{
			base.FrameworkInitialize();

			string content = String.Empty;
			Stream stream = Assembly.GetExecutingAssembly().GetManifestResourceStream(GetType(), GetType().Name + ".aspx");
			using (StreamReader reader = new StreamReader(stream))
			{
				content = reader.ReadToEnd();
			}            
			
			Control userControl = Page.ParseControl(content);
			this.Controls.Add(userControl);
		}

	}
}
